const createHandler = () => {
  const dep = []
  let get = (target, prop, receiver) => {
    console.log('get', prop)
    return target[prop]
  }
  let set = (target, prop, value, receiver) => {
    console.log('set', prop)
    return Reflect.set(target, prop, value)
  }
  return { get, set }
}

const walk = date => {
  for (let key in data) {
    const dep = []
    let val = data[key]

    var nativeString = Object.prototype.toString.call(val)
    if (nativeString === '[object Object]')
      // walk(val) // <<< -----------
      arguments.callee(val)

    new Proxy(data, createHandler())
  }
}

let date = { a: 1, b: { bb: 1 }, c: 1 }
